package service;

import entity.AfterSaleApplication;
import enum_var.AfterSaleType;
import enum_var.ApplicationStatus;
import java.util.List;

/**
 * 售后申请核心业务接口
 */
public interface AfterSaleApplicationService {

    /**
     * 创建售后申请
     * @param application 售后申请信息
     */
    void createApplication(AfterSaleApplication application);

    /**
     * 根据ID查询售后申请
     * @param id 申请ID
     * @return 售后申请实体
     */
    AfterSaleApplication getApplicationById(Long id);

    /**
     * 根据用户ID查询售后申请列表
     * @param userId 用户ID
     * @return 售后申请列表
     */
    List<AfterSaleApplication> getApplicationsByUserId(Long userId);

    /**
     * 根据状态查询售后申请列表
     * @param status 申请状态
     * @return 售后申请列表
     */
    List<AfterSaleApplication> getApplicationsByStatus(ApplicationStatus status);

    /**
     * 查询所有售后申请
     * @return 售后申请列表
     */
    List<AfterSaleApplication> getAllApplications();

    /**
     * 更新售后申请
     * @param application 售后申请实体
     */
    void updateApplication(AfterSaleApplication application);

    /**
     * 删除售后申请
     * @param id 申请ID
     */
    void deleteApplication(Long id);
    // AfterSaleApplicationService 接口新增方法
    List<AfterSaleApplication> getByUserIdAndStatus(Long userId, ApplicationStatus status);
    List<AfterSaleApplication> getByUserIdAndType(Long userId, AfterSaleType type);
    List<AfterSaleApplication> getByUserIdStatusAndType(Long userId, ApplicationStatus status, AfterSaleType type);
    List<AfterSaleApplication> getByStatusAndType(ApplicationStatus status, AfterSaleType type);
    List<AfterSaleApplication> getByType(AfterSaleType type);
}